热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

漏洞预警|Android系统序列化、反序列化不匹配漏洞

前言近期我们在Android序列化对象中发现了多个安全漏洞,序列化是android系统中很常用也很重要的一个过程,此类漏洞正是利用序列化过程前后数据不匹配导致的越权操作,可以让攻击者重置手机pin码、

前言

近期我们在Android序列化对象中发现了多个安全漏洞,序列化是android系统中很常用也很重要的一个过程,此类漏洞正是利用序列化过程前后数据不匹配导致的越权操作,可以让攻击者重置手机pin码、安装或卸载用户应用,部分漏洞已经在2018年四月份的Android安全公告中披露并分配CVE:CVE-2017-13286, CVE-2017-13288, CVE-2017-13289。

利用漏洞可以使用外观完全相同的恶意应用替换金融APP、聊天APP等重要应用,受害者将面临账号被盗、财产损失的危险。这些漏洞可以实现在低权限应用中越权操作其他应用,并且操作过程中不需要界面交互,因此只要找准发动时机,完全可以在受害者毫不知情的情况下完成攻击。

本文首先对漏洞成因做一个简单的介绍,然后详细说明此类漏洞会造成的影响,如何缓解修复此类漏洞,最后列出用户应该怎么避免此类漏洞的攻击。

 

漏洞细节

Parcelable是Android中实现序列化的一个接口。需要实现序列化的类只需要实现Parcelable接口和它的几个方法即可。其中writeToParcel、createFromParcel两个方法最为关键。这两个方法提供了序列化和反序列化的能力。writeToParcel中写入需要保存的数据,createFromParcel中按相同的顺序和类型读出。不对称的写入、读出会导致严重的安全问题。以CVE-2017-13286为例:

WriteToParcel中写入了一个32位的mIsShared,但是在createFromParcel中少读了一个32位的数据。导致在读写内存时错位,在处理错位的内存数据时会造成类型混淆。当攻击者精心构造一组序列化的数据之后,这组恶意序列化数据可以稳定绕过Android系统几年前的一个漏洞补丁Android-bug-7699048。

 

漏洞利用

Android-bug-7699048是存在于Android 2.3至4.3中的调用任意私有Activity漏洞。但是这次发现的漏洞却可以影响Android6.0甚至8.0以上版本,通过漏洞绕过补丁后,攻击者可以实施重置pin码、安装、卸载应用等操作。


  1. 替换应用

这批漏洞导致的最直接后果就是在不需要用户交互的情况下,攻击者可以利用漏洞任意卸载安装用户应用。

Android-bug-7699048又叫LaunchAnyWhere,顾名思义就是可以任意调用私有Activity,而这批漏洞恰好可以绕过Android-bug-7699048补丁,此外还可以影响更高版本Android系统。相较于Android-bug-7699048,这批漏洞影响范围更广。

在此条件基础上,攻击者就可以很轻松的绕过安装和卸载过程中需要用户交互的界面,直接进行安装或是卸载。若是针对普通应用,这些应用将变成钓鱼程序,若是针对金融APP或是常用聊天软件,将直接造成账号财产损失。

以下演示启动攻击程序后,静默替换用户聊天软件:

通过精心的构造或是重打包,伪造出的应用迷惑性非常强,用户仅从外观上很难分辨真假。


  1. 重置pin码

设置pin码后,手机需要输入pin码解锁。利用此漏洞绕过pin码验证,可以做到直接重置手机pin码。如下图,启动攻击程序后将弹出pin码重置界面:

图 弹出重置pin码窗口

漏洞危害

攻击者可以利用这类漏洞强制卸载用户手机中的安全软件,以此绕过安全软件对手机系统的保护,从而增大用户手机的安全隐患。攻击者在卸载安全软件之后,可以进一步攻击系统来获取更高的权限、更持久稳定的控制。因为没有了安全软件的保护,用户的手机系统完全暴露在了攻击者的“屠刀”下。攻击者同样可以利用这类漏洞来替换正常应用,用钓鱼的方式获取用户的敏感信息。

 

受影响版本

CVE-2017-13286:8.0, 8.1

CVE-2017-13288:8.0, 8.1

CVE-2017-13289:6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1

 

修复方案

对于这类漏洞的修复非常简单,只需要保持写入读出的顺序和类型一致即可。

对于用户来说,想要避免此类攻击,应该尽快更新系统版本。


推荐阅读
  • GSIOpenSSH PAM_USER 安全绕过漏洞
    漏洞名称:GSI-OpenSSHPAM_USER安全绕过漏洞CNNVD编号:CNNVD-201304-097发布时间:2013-04-09 ... [详细]
  • Google在I/O开发者大会详细介绍Android N系统的更新和安全性提升
    Google在2016年的I/O开发者大会上详细介绍了Android N系统的更新和安全性提升。Android N系统在安全方面支持无缝升级更新和修补漏洞,引入了基于文件的数据加密系统和移动版本的Chrome浏览器可以识别恶意网站等新的安全机制。在性能方面,Android N内置了先进的图形处理系统Vulkan,加入了JIT编译器以提高安装效率和减少应用程序的占用空间。此外,Android N还具有自动关闭长时间未使用的后台应用程序来释放系统资源的机制。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 数字账号安全与数据资产问题的研究及解决方案
    本文研究了数字账号安全与数据资产问题,并提出了解决方案。近期,大量QQ账号被盗事件引起了广泛关注。欺诈者对数字账号的价值认识超过了账号主人,因此他们不断攻击和盗用账号。然而,平台和账号主人对账号安全问题的态度不正确,只有用户自身意识到问题的严重性并采取行动,才能推动平台优先解决这些问题。本文旨在提醒用户关注账号安全,并呼吁平台承担起更多的责任。令牌云团队对此进行了长期深入的研究,并提出了相应的解决方案。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • Java学习笔记之使用反射+泛型构建通用DAO
    本文介绍了使用反射和泛型构建通用DAO的方法,通过减少代码冗余度来提高开发效率。通过示例说明了如何使用反射和泛型来实现对不同表的相同操作,从而避免重复编写相似的代码。该方法可以在Java学习中起到较大的帮助作用。 ... [详细]
  • 原理:dismiss再弹出,把dialog设为全局对象。if(dialog!null&&dialog.isShowing()&&!(Activity.)isFinishing()) ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
author-avatar
陆星星陆星星风_586
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有